package com.runda.util;

import java.io.BufferedWriter;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileWriter;
import java.io.IOException;
import java.io.UnsupportedEncodingException;
import java.util.Date;

public class LogUtil {

	public static void main(String args[]) {
		// System.out.println();
		createlogfile("test", "E:\\", new Date(), 1, "创建文档");
		writelog("test", "E:\\", new Date(), 2, "继续继续");
	}

	/**
	 * 创建日志文件
	 * 
	 * @param uniqueid
	 *            独立标识
	 * @param path
	 *            路径(不带文件名)
	 * @param time
	 *            日志时间
	 * @param type
	 *            日志类型
	 * @param write
	 *            日志内容
	 */
	public static void createlogfile(String uniqueid, String path, Date time, Integer type, String write) {
		try {
			File file = new File(path);
			if (!file.exists()) {
				file.mkdirs();
			}
			File writename = new File(path + "/" + uniqueid + ".log");// 相对路径，如果没有则要建立一个新的output。txt文件
			if(writename.exists()) {
				//如果日志文件已经存在了，继续往里写
				rewritelog(uniqueid, path, time, type, write);
			}else {
				writename.createNewFile(); // 创建新文件
				BufferedWriter out = new BufferedWriter(new FileWriter(writename));
				out.write("--------------------------------------------------------------------------------"+ "\r\n"); // \r\n即为换行
				out.write(Tool.stringOfDateTime()+ " " + type.toString() + " " + write + "\r\n"); // \r\n即为换行
				out.flush(); // 把缓存区内容压入文件
				out.close(); // 最后记得关闭文件
			}
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
	
	/**
	 * 续写日志文件
	 * 
	 * @param uniqueid
	 *            独立标识
	 * @param path
	 *            路径(不带文件名)
	 * @param time
	 *            日志时间
	 * @param type
	 *            日志类型
	 * @param write
	 *            日志内容
	 */
	public static void rewritelog(String uniqueid, String path, Date time, Integer type, String write) {
		try { // 防止文件建立或读取失败，用catch捕捉错误并打印，也可以throw
			/* 读入TXT文件 */
			File file = new File(path);
			if (!file.exists()) {
				file.mkdir();
			}
			String pathname = path + "/" + uniqueid + ".log"; // 绝对路径或相对路径都可以，这里是绝对路径，写入文件时演示相对路径
			File filename = new File(pathname); // 要读取以上路径的input。txt文件
			if(!filename.exists()) {
				filename.createNewFile();
				BufferedWriter out = new BufferedWriter(new FileWriter(pathname));
				out.write("--------------------------------------------------------------------------------"+ "\r\n"); // \r\n即为换行
				out.flush(); // 把缓存区内容压入文件
				out.close(); // 最后记得关闭文件
			}
			Long filelength = filename.length();
			byte[] filecontent = new byte[filelength.intValue()];
			try {
				FileInputStream in = new FileInputStream(filename);
				in.read(filecontent);
				in.close();
			} catch (FileNotFoundException e) {
				e.printStackTrace();
			} catch (IOException e) {
				e.printStackTrace();
			}
			try {
				String content = new String(filecontent, "UTF-8");
				System.out.println(content);
				File writename = new File(path + "/" + uniqueid + ".log"); // 相对路径，如果没有则要建立一个新的output。txt文件
				writename.createNewFile(); // 创建新文件
				BufferedWriter out = new BufferedWriter(new FileWriter(writename));
				content += "--------------------------------------------------------------------------------"+ "\r\n"; // \r\n即为换行
				out.write(content + Tool.stringOfDateTime() + " " + type.toString() + " " + write + "\r\n"); // \r\n即为换行
				out.flush(); // 把缓存区内容压入文件
				out.close(); // 最后记得关闭文件
			} catch (UnsupportedEncodingException e) {
				System.err.println("The OS does not support " + "UTF-8");
				e.printStackTrace();
			}
			/* 写入Txt文件 */
		} catch (Exception e) {
			e.printStackTrace();
		}
	}

	/**
	 * 续写日志文件
	 * 
	 * @param uniqueid
	 *            独立标识
	 * @param path
	 *            路径(不带文件名)
	 * @param time
	 *            日志时间
	 * @param type
	 *            日志类型
	 * @param write
	 *            日志内容
	 */
	public static void writelog(String uniqueid, String path, Date time, Integer type, String write) {
		try { // 防止文件建立或读取失败，用catch捕捉错误并打印，也可以throw
			/* 读入TXT文件 */
			File file = new File(path);
			if (!file.exists()) {
				file.mkdir();
			}
			String pathname = path + "/" + uniqueid + ".log"; // 绝对路径或相对路径都可以，这里是绝对路径，写入文件时演示相对路径
			File filename = new File(pathname); // 要读取以上路径的input。txt文件
			if(!filename.exists()) {
				filename.createNewFile();
				BufferedWriter out = new BufferedWriter(new FileWriter(pathname));
				out.write("--------------------------------------------------------------------------------"+ "\r\n"); // \r\n即为换行
				out.flush(); // 把缓存区内容压入文件
				out.close(); // 最后记得关闭文件
			}
			Long filelength = filename.length();
			byte[] filecontent = new byte[filelength.intValue()];
			try {
				FileInputStream in = new FileInputStream(filename);
				in.read(filecontent);
				in.close();
			} catch (FileNotFoundException e) {
				e.printStackTrace();
			} catch (IOException e) {
				e.printStackTrace();
			}
			try {
				String content = new String(filecontent, "UTF-8");
				System.out.println(content);
				File writename = new File(path + "/" + uniqueid + ".log"); // 相对路径，如果没有则要建立一个新的output。txt文件
				writename.createNewFile(); // 创建新文件
				BufferedWriter out = new BufferedWriter(new FileWriter(writename));
				out.write(content + Tool.stringOfDateTime() + " " + type.toString() + " " + write + "\r\n"); // \r\n即为换行
				out.flush(); // 把缓存区内容压入文件
				out.close(); // 最后记得关闭文件
			} catch (UnsupportedEncodingException e) {
				System.err.println("The OS does not support " + "UTF-8");
				e.printStackTrace();
			}
			/* 写入Txt文件 */
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
}
